﻿using System;
using System.Collections.Generic;
using System.Web.UI;
using System.Web.UI.WebControls;
using Sebra.Academico.InfraEstrutura.Core.Helper;
using Sebra.Academico.Trilhas.BP;
using Sebrae.Academico.Trilhas.BP;
using Sebrae.Academico.Trilhas.Dominio.Classes;

namespace Sebrae.Academico.Trilhas.WebForms.Cadastros.MatriculaTrilha
{
    public partial class ListarMatriculaTrilha : System.Web.UI.Page
    {
        private ManterMatriculaTrilha manterMatrilhaTrilha = null;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                this.PreencherCombos();
            }
        }

        #region  "Métodos Privados"

        private void PreencherCombos()
        {
            try
            {
                PreencherComboTrilhas();
                PreencherComboTrilhaNivel();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private void PreencherComboTrilhas()
        {
            ManterTrilha manterTrilha = new ManterTrilha();
            IList<Trilha> ListaTrilhas = manterTrilha.ObterTrilhas();
            WebFormHelper.PreencherLista(ListaTrilhas, this.ddlTrilha);
        }

        private void PreencherComboTrilhaNivel()
        {
            ManterTrilhaNivel manterTrilhaNivel = new ManterTrilhaNivel();
            IList<TrilhaNivel> ListaTrilhaNivel = manterTrilhaNivel.ObterTodos();
            WebFormHelper.PreencherLista(ListaTrilhaNivel, this.ddlTrilhaNivel);
        }

        #endregion

        protected void btnNovo_Click(object sender, EventArgs e)
        {
            Response.Redirect("EdicaoMatriculaTrilha.aspx");
        }

        protected void dgvMatriculaTrilha_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName.Equals("delete"))
            {
                manterMatrilhaTrilha = new ManterMatriculaTrilha();
                int idMatriculaTrilha = int.Parse(e.CommandArgument.ToString());
                manterMatrilhaTrilha.ExcluirMatriculaTrilha(new UsuarioTrilha() { ID = idMatriculaTrilha });
                Response.Redirect("ListarMatriculaTrilha.aspx");
            }
            else if (e.CommandName.Equals("editar"))
            {
                int idMatriculaTrilha = int.Parse(e.CommandArgument.ToString());
                Session.Add("MatriculaTrilhaEdit", idMatriculaTrilha);
                Response.Redirect("ListarMatriculaTrilha.aspx", false);
            }
        }

        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            if (Page.IsValid)
            {
                try
                {
                    UsuarioTrilha usuarioTrilha = ObterObjetoUsuarioTrilha();
                    manterMatrilhaTrilha = new ManterMatriculaTrilha();
                    IList<UsuarioTrilha> ListaUsuarioTrilha = manterMatrilhaTrilha.ObterMatriculaTrilhaPorFiltro(usuarioTrilha);

                 //   ListaUsuarioTrilha[0].

                    WebFormHelper.PreencherGrid(ListaUsuarioTrilha, this.dgvMatriculaTrilha);
                }
                catch (Exception ex)
                {
                    //TODO -> Exibir mensagem de Erro em um alert ? -> Precisamos definir isso
                    throw ex;
                }
            }
        }

        public UsuarioTrilha ObterObjetoUsuarioTrilha()
        {
            UsuarioTrilha usuarioTrilha = new UsuarioTrilha();

            //Trilha
            if (!string.IsNullOrWhiteSpace(this.ddlTrilha.SelectedItem.Value))
                usuarioTrilha.Trilha = new Trilha() { ID = int.Parse(this.ddlTrilha.SelectedItem.Value) };

            //Trilha Nivel
            if (!string.IsNullOrWhiteSpace(this.ddlTrilhaNivel.SelectedItem.Value))
                usuarioTrilha.TrilhaNivel = new TrilhaNivel() { ID = int.Parse(this.ddlTrilhaNivel.SelectedItem.Value) };

            return usuarioTrilha;

        }

    }
}